package com.tjec.project.projectWorkbench.mapper;

import com.tjec.project.projectWorkbench.domain.BmsProjectMember;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Set;

/**
 * 项目成员Mapper接口
 * 
 * @author tjec
 * @date 2020-04-10
 */
public interface BmsProjectMemberMapper 
{
    /**
     * 查询项目成员
     * 
     * @param id 项目成员ID
     * @return 项目成员
     */
    public BmsProjectMember selectBmsProjectMemberByGuid(String id);

    /**
     * 查询项目成员列表
     * 
     * @param bmsProjectMember 项目成员
     * @return 项目成员集合
     */
    public List<BmsProjectMember> selectBmsProjectMemberList(BmsProjectMember bmsProjectMember);

    /**
     * 查询未包含的项目成员列表
     *
     * @param bmsProjectMember 项目成员
     * @param leader           项目负责人ID
     * @return 项目成员集合
     */
    public List<BmsProjectMember> selectNotInBmsProjectMemberList(@Param("bmsProjectMember")BmsProjectMember bmsProjectMember,@Param("leader") String leader);

    /**
     * 新增项目成员
     * 
     * @param bmsProjectMember 项目成员
     * @return 结果
     */
    public int insertBmsProjectMember(BmsProjectMember bmsProjectMember);

    /**
     * 修改项目成员
     * 
     * @param bmsProjectMember 项目成员
     * @return 结果
     */
    public int updateBmsProjectMember(BmsProjectMember bmsProjectMember);

    /**
     * 删除项目成员
     * 
     * @param guid 项目成员guid
     * @return 结果
     */
    public int deleteBmsProjectMemberByGuid(String guid);

    /**
     * 批量删除项目成员
     *
     * @param guids 需要删除的数据ID
     * @return 结果
     */
    public int deleteBmsProjectMemberByGuids(String[] guids);


    /**
     * 查询项目成员
     *
     * @param userId 用户ID
     * @return 结果
     */
    public int selectBmsProjectMemberByUserId(String userId);

    /**
     * 通过用户id或项目状态查询该用户在某个状态下的项目数
     *
     * @param bmsProjectMember
     * @return 结果
     */
    public Set<String> selectBmsProjectMemberByUserIdOrProjectStatus(BmsProjectMember bmsProjectMember);


    /**
     * 查询历史项目信息变更
     * @param bmsProjectMember
     * @return
     */
    List<BmsProjectMember> selectHistoryProjectList(BmsProjectMember bmsProjectMember);

    /**
     * 统计项目人数
     *
     * @param bmsProjectMember
     * @return 结果
     */
    public Integer countBmsProjectMemberNo(BmsProjectMember bmsProjectMember);


    /**
     * 是否为招标组长/成员
     * @param bmsProjectMember
     * @return
     */
    public List<String> isTenderMember(BmsProjectMember bmsProjectMember);

    /**\
     *查询项目负责人所属项目下的项目成员中是否存在该用户
     * @param leader
     * @param userGuids
     * @return
     */
    List<BmsProjectMember> selectBmsProjectMemberListByLeaderAndUserGuids(@Param("leader") String leader, @Param("userGuids")String[] userGuids);

    /**\
     *更新项目经理为项目成员
     * @param projectId
     * @return
     */
    int updateBmsProjectMemberAsMember(String projectId);

    /**
     * 查询负责人人员并且不在项目成员中
     * @param bmsProjectMember
     * @return
     */
    List<BmsProjectMember> selectBmsProjectMemberNoProjectMember(BmsProjectMember bmsProjectMember);

    /**
     * 项目成员-移动端
     *
     * @param bmsProjectMember
     * @return
     */
    List<BmsProjectMember> selectBmsProjectMemberMobileList(BmsProjectMember bmsProjectMember);
}
